1. Technical Field
This disclosure generally relates to virtual machine management and configuration.
2. Description of the Related Art
Virtual machines were initially developed to solve the problem of time-sharing expensive mainframe hardware. A virtual machine (VM) is a fully protected and isolated copy of an underlying physical machine's hardware; a single physical machine may run a plurality of VMs. Each VM user is given the illusion of having a dedicated physical machine. Software developers may write and test programs in a VM without fear of crashing the physical machine and affecting other users. The VM users may run their VM instances on separate physical machines that are connected via a network to the physical machine running the virtualized system, allowing the users to access the applications, files, and hardware of the physical machine from a remote machine.
Between the VMs and the physical machine lies the virtual machine manager (VMM), or hypervisor. The VMM is a software layer that controls the VMs' access to the underlying physical machine so that the VMs do not interfere with each other or the physical machine. The VMs execute without interference from the VMM, albeit in a non-privileged mode, which allows the VMs to execute directly on the hardware of the physical machine; this increases efficiency of the virtualized system. However, the VMM will intervene whenever a VM tries to perform any operation that may affect the operation of other VMs or the underlying physical machine. The VMM safely emulates the possibly risky operation, then returns control back to the VM. VMs therefore may achieve close to native performance without compromising the integrity of the underlying physical machine.
Security is an important concern in virtualization; each link in the chain from the physical machine to the VMM to the VM must establish a degree of trust. One method of establishing trust is a measured launch of the VMM. A measured launch procedure may evaluate all or part of the software that comprises the VMM, and then store the results of the evaluation in a secure hardware location. As the VMM runs, the stored results of the measurement, also known as attestation data, may be used to verify the state of the VMM, and determine if the VMM software has been changed without authorization or corrupted by, for example, a virus.